import { Dep } from './dep.js';

export class Watcher {
  constructor(vm, key, cb) {
    this.vm = vm;
    this.cb = cb;
    this.key = key;

    Dep.target = this;

    // 访问了属性以后，就会自动去添加dep中
    this.oldValue = vm[key];

    Dep.target = null;
  }

  // 当数据发生变化的时候更新视图。
  update() {
    const newValue = this.vm[this.key];
    if (this.oldValue === newValue) return;
    this.cb(newValue);
  }
}
